package main

import (
	"fmt"
)

func main() {
	res := majorityElement([]int{6, 6, 6, 7, 7})
	fmt.Println(res)
}

/*
数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。
你可以假设数组是非空的，并且给定的数组总是存在多数元素。
示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

func majorityElement(nums []int) int {
	countMap := make(map[int]int)
	for _, num := range nums {
		_, ok := countMap[num]
		if ok {
			countMap[num] ++
		} else {
			countMap[num] = 1
		}
	}
	var halfLen int
	if len(nums)%2 != 0 {
		halfLen = (len(nums) / 2) + 1
	} else {
		halfLen = len(nums) / 2
	}
	fmt.Println(halfLen)
	for k, v := range countMap {
		if v >= halfLen {
			return k
		}
	}
	return -1
}
